<?php


namespace App\Services\Game;

//角色物品关联表-服务

use App\DTOS\Admin\RoleEquipDTO;
use App\Models\Game\RoleEquip;
use App\Utils\MyLog;

class RoleEquipService
{
    public function paginate(RoleEquipDTO $DTO)
    {
        $model = RoleEquip::query();
        $page = $DTO->getPage();
        $pageSize = $DTO->getLimit();
        $gameArea = $DTO->getGameArea();
        $equipId = $DTO->getEquipId();
        $equipUuId = $DTO->getEquipUuId();
        if ($gameArea!==null){
            $model->where('server_id',$gameArea);
        }
        if ($equipId){
            $model->where('equip_id',$equipId);
        }
        if ($equipUuId){
            $model->where('equip_uuid',$equipUuId);
        }
        return $model->orderByDesc('count')->orderByDesc('role_id')->paginate($pageSize,'*','page',$page);
    }


    public function groupPaginate(RoleEquipDTO $DTO)
    {
        $page = $DTO->getPage();
        $pageSize = $DTO->getLimit();
        $gameArea = $DTO->getGameArea();
        $equipId = $DTO->getEquipId();
        $equipUuId = $DTO->getEquipUuId();
        $model = RoleEquip::query()->groupBy('role_id','mem_id','equip_id')->select('role_id', \DB::raw('sum(count) as count'),'mem_id','equip_id')->take($pageSize)->orderBy('count', 'desc')->orderBy('role_id', 'desc');

        if ($gameArea!==null){
            $model->where('server_id',$gameArea);
        }
        if ($equipId){
            $model->where('equip_id',$equipId);
        }
        if ($equipUuId){
            $model->where('equip_uuid',$equipUuId);
        }

        return $model->paginate($pageSize,'*','page',$page);
    }
}
